最近一直在跟着廖雪峰的教程学习 Python 3。快速的过了一半教程,边学边敲,还在与实现相同功能的 Object-C 代码做对比,体验到了
C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。
所以Python是一种相当高级的语言。
This time I will finish it.
切片简介
切片
取一个 list 或 tuple 的部分元素是非常常见的操作。比如,一个 list 如下:
L = [“Michael”, “Sarah”, “Tracy”, “Bob”, “Jack”]
取前3个元素,应该怎么做?笨办法:
print([L[0], L[1], L[2]])
[“Michael”, “Sarah”, “Tracy”]
之所以是笨办法是因为扩展一下,取前N个元素就没辙了。取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:
r = []
n = 3
for i in range(n):
r.append(L[i])
print(r)
[“Michael”, “Sarah”, “Tracy”]对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python 提供了切片(Slice)操作符,能大大简化这种操作。
语法对比(Object-C、Swift、Python)
目的:字符串逆序输出
|
|
|
|
|
|
显而易见,这里面又臭又笨的语法是我最熟悉的 Object-C,其次是能说人话的 Swift,接下来 Python 里面的 [::-1] 就是传说中的切片语句,接下来会对切片语句进行分析说明。
切片语法
先来个入门的
|
|
|
|
进阶
|
|
语法解析
[] 方括号里面可选三种参数: beg (开始下标), end (结束下标), 以及 step (变化方向)
令人感动的是 Python 中的切片大法 不仅支持字符串操作,还可以操作 数组
|
|
在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python 没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。
基于这一思想,我们可以使用 Python 的高级语法,1行代码能实现的功能,决不写5行代码。
代码越少,开发效率越高。
学了快一个星期的 Python 发现自己快有一些精神分裂了..比如 Python 里面没有{}符号,所以对于代码缩进异常严格,有时习惯按照自己的 Code Style 换行时把代码对齐,在 Python 里面是不行的!对于我这样的 Py 初学者,快速定位不到问题,一脸懵逼。然后自己将廖雪峰的源代码 copy 来编译通过后,对比代码差异才发觉是哪里出现问题。
在查问题的时候 发现了一个人的签名:技术和创新是具有扩散性和可复制性的。
所以我觉得廖雪峰这种人愿意将技术传播教学分享出来的人,特别了不起。
希望自己也是。